package com.yisu.expressway.manager.core.mapper;

import com.yisu.expressway.ewf.entity.GoodsCategory;
import com.yisu.expressway.manager.domain.request.GoodsCategoryRequest;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface GoodsCategoryMapper {
    int deleteByPrimaryKey(Long id);
    int resetInfo();

    int insert(GoodsCategory record);

    GoodsCategory selectByPrimaryKey(Long id);

    int updateByPrimaryKey(GoodsCategory record);

    /**
     * 通过父节点ID获取下级最大排序
     * @param parentId 父节点信息
     * @return 排序值
     */
    int getMaxSortByParentId(@Param("parentId")String parentId);

    /**
     * 通过父级节点获取下级列表信息
     * @param parentId 父级节点id
     * @return 子集列表信息
     */
    List<GoodsCategory> getChildDataByParentId(@Param("parentId")String parentId);

    /**
     *通过分类编号数组获取对应列表数据
     * @param goodsCategoryCodes 分类编号数组
     * @return
     */
    List<GoodsCategory> getGoodsCategoryListByGoodsCategoryCodes(@Param("goodsCategoryCodes")List<String> goodsCategoryCodes);

    /**
     * 更新排序
     * @param goodsCategory 更新对象
     * @return
     */
    boolean updateSort(GoodsCategory goodsCategory);

    /**
     * 通过节点ID，获取当前节点下是否存在子集节点
     * @param parentId 当前节点
     * @return 是、否
     */
    int isHaveChildNode(@Param("parentId")String parentId);

    /**
     * 通过分类Code获取分类信息
     * @param categoryCode
     * @return
     */
    GoodsCategory getGoodsCategoryByGoodsCategoryCode(@Param("categoryCode")String categoryCode);

    /**
     * 充值商品分类
     * @return
     */
    boolean resetGoodsCategory();
    /**
     * 通过类目名称获取类目对象信息--解析数据专用
     * @param categoryName 类目名称
     * @return
     */
    GoodsCategory getGoodsCategoryModelByName(@Param("categoryName")String categoryName);

    /**
     * 通过类目名称及上级编号获取类目对象信息--解析数据专用
     * @param goodsCategoryRequest 请求参数
     * @return
     */
    GoodsCategory getGoodsCategoryModelByNameAndParentId(GoodsCategoryRequest goodsCategoryRequest);
}